package rsj.sql.operlog;

import com.rlyy.aibase.utils.base.Node;
import com.rlyy.aibase.utils.base.TableNode;
import rsj.annotation.DynamicSelect;
import rsj.annotation.Param;
import rsj.service.report.dynamic.DownloadLogDynamic;

import java.time.LocalDate;

/**
 * 查询日志
 *
 * @author yuanqinglong
 * @since 2021/8/2 15:04
 */
public interface OperateLogDao {


    /**
     * 帐户日志
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param autKeyid  账号标识
     * @param pageNow   页面页码
     * @param pageSize  页面大小
     * @return {@link TableNode}
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "accountLog")
    TableNode accountLog(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                         @Param(value = "autKeyid") String autKeyid, @Param(value = "pageNow") Integer pageNow,
                         @Param(value = "pageSize") Integer pageSize);


    /**
     * 帐户日志统计
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param autKeyid  账号标识
     * @return int
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "accountLogCount")
    Node accountLogCount(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                         @Param(value = "autKeyid") String autKeyid);


    //--------------------------------账号接口下载日志-------------------------------//

    /**
     * 下载帐户接口日志
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param autKeyid  账号标识
     * @param prodUid   接口编号
     * @param pageNow   页面页码
     * @param pageSize  页面大小
     * @return {@link TableNode}
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "accountProductLog")
    TableNode accountProductLog(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                                @Param(value = "autKeyid") String autKeyid, @Param(value = "prodUid") String prodUid,
                                @Param(value = "pageNow") Integer pageNow, @Param(value = "pageSize") Integer pageSize);


    /**
     * 帐户接口日志统计
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param autKeyid  账号标识
     * @param prodUid   接口编号
     * @return int
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "accountProductLogCount")
    Node accountProductLogCount(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                                @Param(value = "autKeyid") String autKeyid, @Param(value = "prodUid") String prodUid);


    //--------------------------------下载客户日志-------------------------------//

    /**
     * 下载客户日志
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param custId    客户id
     * @param pageNow   页面页码
     * @param pageSize  页面大小
     * @return {@link TableNode}
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "customerLog")
    TableNode customerLog(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                          @Param(value = "custId") String custId,
                          @Param(value = "pageNow") Integer pageNow, @Param(value = "pageSize") Integer pageSize);


    /**
     * 客户日志统计
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param custId    客户id
     * @return int
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "customerLogCount")
    Node customerLogCount(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                          @Param(value = "custId") String custId);


    //--------------------------------下载客户接口日志-------------------------------//

    /**
     * 下载客户接口日志
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param custId    客户id
     * @param prodUid   接口id
     * @param pageNow   页面页码
     * @param pageSize  页面大小
     * @return {@link TableNode}
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "customerProductLog")
    TableNode customerProductLog(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                                 @Param(value = "custId") String custId, @Param(value = "prodUid") String prodUid,
                                 @Param(value = "pageNow") Integer pageNow, @Param(value = "pageSize") Integer pageSize);


    /**
     * 客户接口日志统计
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param custId    客户id
     * @param prodUid   接口id
     * @return int
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "customerProductLogCount")
    Node customerProductLogCount(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                                 @Param(value = "custId") String custId,@Param(value = "prodUid") String prodUid);



    //--------------------------------下载接口日志-------------------------------//

    /**
     * 下载接口日志
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param prodUid   接口id
     * @param pageNow   页面页码
     * @param pageSize  页面大小
     * @return {@link TableNode}
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "productLog")
    TableNode productLog(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                         @Param(value = "prodUid") String prodUid,
                         @Param(value = "pageNow") Integer pageNow, @Param(value = "pageSize") Integer pageSize);


    /**
     * 接口日志统计
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param prodUid   接口id
     * @return int
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "productLogCount")
    Node productLogCount(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                         @Param(value = "prodUid") String prodUid);



    //--------------------------------下载接口分类日志-------------------------------//

    /**
     * 下载接口分类日志
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param prtyFid   接口分类
     * @param pageNow   页面页码
     * @param pageSize  页面大小
     * @return {@link TableNode}
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "productCategoryLog")
    TableNode productCategoryLog(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                         @Param(value = "prtyFid") String prtyFid,
                         @Param(value = "pageNow") Integer pageNow, @Param(value = "pageSize") Integer pageSize);


    /**
     * 接口分类日志统计
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param prtyFid   接口分类
     * @return int
     */
    @DynamicSelect(type = DownloadLogDynamic.class, method = "productCategoryLogCount")
    Node productCategoryLogCount(@Param(value = "startTime") LocalDate startTime, @Param(value = "endTime") LocalDate endTime,
                                 @Param(value = "prtyFid") String prtyFid);


}
